--[[
	节点唯一id生成服务
	主要原理：启动的时候，获得启动毫秒数，作为起点，每次调用在这个数字上加一返回。
	只要低于1000qps的强度，不会产生唯一id冲突的问题。（每次启动会增加到当前时间）
	如果强度更高， 可以获得微秒数
	需要注意：这个uuid需要32为整数，数据库用bigint格式。不同节点之间唯一id可能重复，
	需要业务去区分，如果用在不同业务中，没关系。
	如果是平行节点，不同节点产生的唯一id，用在一个业务中，可能需要做唯一id段的区分
	]]

local skynet = require "skynet"
require "skynet.manager"

local uuid

local CMD = {}

function CMD.getuuid()
	uuid = uuid + 1
	return uuid
end

skynet.dispatch("lua", function (session, address, cmd, ...)
	local f = assert(CMD[cmd])
	skynet.retpack(f(...))
end)

skynet.start(function ()
	uuid = math.floor(skynet.time()*1000)
end)
